Most modern operating systems (OSs) provide a mechanism to notify a user of something that has happened, usually referred to as a notification or a “toast.” These notifications are typically placed in a global notification area that is designed to hold all notifications received system-wide. For instance, in Windows, a user can view all of his/her notifications in an area known as the action center and can see these notifications appear in the bottom-right corner of the desktop.
Some OSs allow certain notifications to be displayed proximate to a user interface (UI) element or application object to which the notifications pertain (in addition to, or in lieu of, displaying them in the global notification area). Such notifications are referred to herein as contextual notifications. For example, in iOS, a contextual “badge” notification can be displayed on top of an application icon that indicates the number of new, unread items received by that application (e.g., unread emails). As another example, in Windows Phone OS, a contextual “tile” notification can be displayed on top of an application tile that presents a notification payload received by that application.
However, in existing implementations, the presentation of these contextual notifications is generally handled (1) entirely at the OS level or (2) entirely at the application level. With approach (1), an application developer cannot customize the way in which his/her application's contextual notifications are shown to an end-user; instead, all such notifications are presented generically in the manner dictated by the OS (such as, e.g., iOS badge notifications). With approach (2), the application developer has freedom to define exactly how contextual notifications should be displayed with respect to the application's objects, but the main process of the application must be running at the time contextual notifications are received in order for the application to intercept and present the notifications.